/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package kiwi.core.model.kspace.core;

import kiwi.core.model.Constants;
import kiwi.core.model.annotations.RDF;
import kiwi.core.model.annotations.RDFType;
import kiwi.core.model.entity.KiWiFacade;
import kiwi.core.model.rdf.KiWiResource;

import java.util.Date;


/**
 * Interface which represent a knowledgespace and categoryspace
 *
 * @author Stefan
 */
@RDFType(Constants.NS_KIWI_CORE_KNOWLEDGESPACE + "space")
public interface Space extends KiWiFacade {


    /** the last author of the content item */
    @RDF(Constants.NS_KIWI_CORE+"hasAuthor")
    public KiWiResource getAuthor();

    /**
     * @param author the author to set
     */
    public void setAuthor(KiWiResource author);

    /** Define a category just for the visualisation of spaces in
     * the userinterface*/
    @RDF(Constants.NS_KIWI_CORE + "title")
    /**
     * @return the title
     */
    public String getTitle();

    /**
     * @param title the title to set
     */
    public void setTitle(String title);

    /** the creation time of the KnowledgeSpaceAllocation in the KiWi-System*/
    @RDF(Constants.NS_KIWI_CORE+"createdOn")
    public Date getCreationTime();

    /**
     * @param creationTime the creationTime to set
     */
    public void setCreationTime(Date creationTime);

    /** Define a category just for the visualisation of spaces in
     * the userinterface*/
    @RDF(Constants.NS_KIWI_CORE_KNOWLEDGESPACE + "parentSpace")
    /**
     * @return the categorySpace
     */
    public KiWiResource getCategorySpace();

    /**
     * @param categorySpace the categorySpace to set
     */
    public void setCategorySpace(KiWiResource categorySpace);
}
